PHP代码执行绕过姿势 无数字字母类型 |
您所在的位置:网站首页 › ctf flask 字符 绕过 › PHP代码执行绕过姿势 无数字字母类型 |
问题引导
两个字符异或可以得到一个字符,下一个问题就是如何控制得到我们想要的字符 这里的正则过滤了所有26个字母大小写,如果我想要传入一个eval($_POST[_]); 就需要异或得到这个eval($_POST[_]);字符串 那么如何知道哪两个字符异或可以得到我们想要的字符,就比如如何得到第一个字符 e 这里使用python脚本fuzz测试了一下,脚本如下: def r_xor(): for i in range(0,127): for j in range(0,127): result=i^j print(" "+chr(i)+" ASCII:"+str(i)+' '+chr(j)+" ASCII:"+str(j)+' == '+chr(result)+" ASCII:"+str(result)) if __name__ == "__main__": r_xor()
因为有很多不可打印字符,所以使用url编码表示 然后只需要在POST里面传参 _=phpinfo(); 递增递减运算符绕过 那么,如何拿到一个值为字符串’a’的变量呢? 巧了,数组(Array)的第一个字母就是大写A,而且第4个字母是小写a。也就是说,我们可以同时拿到小写和大写A,等于我们就可以拿到a-z和A-Z的所有字母。 在PHP中,如果强制连接数组和字符串的话,数组将被转换成字符串,其值为Array: 利用这个技巧,编写了如下webshell(因为PHP函数是大小写不敏感的,所以我们最终执行的是ASSERT($POST[]),无需获取小写a): |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |